import { getDict } from "@/utils/dictionary"
import { formatTimeToStr } from "@/utils/date"

export default {
  data() {
    return {
      page: 1,
      total: 10,
      pageSize: 10,
      tableData: [],
      searchInfo: {},
    }
  },
  methods: {
    formatBoolean: function (bool) {
      if (bool !== null) {
        return bool ? "是" : "否"
      } else {
        return ""
      }
    },
    formatDate: function (time, format = "yyyy-MM-dd hh:mm:ss") {
      if (time !== null && time !== "") {
        var date = new Date(time)
        return formatTimeToStr(date, format)
      } else {
        return ""
      }
    },
    filterDict(value, type) {
      const rowLabel = this[type + "Options"] && this[type + "Options"].filter((item) => item.value === value)
      return rowLabel && rowLabel[0] && rowLabel[0].label
    },
    async getDict(type) {
      const dicts = await getDict(type)
      this[type + "Options"] = dicts
      return dicts
    },
    handleSizeChange(val) {
      this.pageSize = val
      this.getTableData()
    },
    handleCurrentChange(val) {
      this.page = val
      this.getTableData()
    },
    // @params beforeFunc function 请求发起前执行的函数 默认为空函数
    // @params afterFunc function 请求完成后执行的函数 默认为空函数
    async getTableData(beforeFunc = () => {}, afterFunc = () => {}) {
      beforeFunc()
      const table = await this.listApi({ page: this.page, pageSize: this.pageSize, ...this.searchInfo })
      if (table.code === 0) {
        this.tableData = table.data.list
        this.total = table.data.total
        this.page = table.data.page
        this.pageSize = table.data.pageSize
      }
      afterFunc()
    },
  },
}
